package com.dgj.log.service.shiro;

import java.util.List;

import com.dgj.biz.entitites.User;
import com.dgj.biz.entitites.auth.Permission;
import com.dgj.biz.entitites.auth.Role;
import com.dgj.utils.entries.Result;

/**
 * 在Shiro中会使用到的用户,用户权限相关的业务处理
 * 
 * @author 王贵源
 *
 *         create at 2015年4月29日 下午3:49:18
 */
public interface IShiroUserService {

	/**
	 * 根据用户名查找用户
	 * 
	 * @param userName
	 *            用户名
	 * @return 用户
	 */
	User findByName(String userName);

	/**
	 * 获取用户的全部权限
	 * 
	 * @param id
	 *            用户id
	 * @return 权限列表
	 */
	List<Permission> getAllPermissions(int id);

	/**
	 * 获取用户的全部权限名称
	 * 
	 * @param id
	 *            用户id
	 * @return 权限名称列表
	 */
	List<String> getAllPermissionsInfo(int id);

	/**
	 * 获取用户的全部角色
	 * 
	 * @param id
	 *            用户id
	 * @return 角色列表
	 */
	List<Role> getAllRoles(int id);

	/**
	 * 获取用户的直接权限
	 * 
	 * @param id
	 *            用户id
	 * @return 权限列表
	 */
	List<Permission> getDirectPermissions(int id);

	/**
	 * 获取用户的全部角色
	 * 
	 * @param id
	 *            用户id
	 * @return 角色列表
	 */
	List<Role> getDirectRoles(int id);

	/**
	 * 获取用户的间接权限,比如角色权限,组权限,职位权限等...
	 * 
	 * @param id
	 *            用户id
	 * @return 权限列表
	 */
	List<Permission> getIndirectPermissions(int id);

	/**
	 * 获取用户的间接角色,如果职位角色等...
	 * 
	 * @param id
	 *            用户id
	 * @return 角色列表
	 */
	List<Role> getIndirectRoles(int id);

	/**
	 * 获取用户的全部角色名称信息
	 * 
	 * @param id
	 *            用户id
	 * @return 用户的角色名称列表
	 */
	List<String> getRolesInfo(int id);

	/**
	 * 登录
	 * 
	 * @param userName
	 *            用户名
	 * @param password
	 *            密码
	 * @return 登录结果
	 */
	Result login(String userName, String password);
}
